package com.zcm.service.weibo.load;

import com.zcm.service.weibo.LoadServices;

import net.sf.json.JSONObject;

/**
 * 与具体微博内容相关的拉取接口
 * 
 * @author Administrator
 * 
 */
public interface WeiboLoadOperators extends LoadServices {
	/**
	 * 获取当前登录用户及其所关注用户的最新微博
	 * 
	 * @param accessToken
	 *            OAuth授权后获得.
	 * @param sinceId
	 *            若指定此参数，则返回ID比since_id大的微博（即比since_id时间晚的微博），默认为0.
	 * @param maxId
	 *            若指定此参数，则返回ID小于或等于max_id的微博，默认为0.
	 * @param count
	 *            单页返回的记录条数，默认为50.
	 * @param page
	 *            返回结果的页码，默认为1.
	 * @param baseApp
	 *            是否只获取当前应用的数据.0为否（所有数据），1为是（仅当前应用），默认为0.
	 * @param filterType
	 *            过滤类型ID，0：全部、1：原创、2：图片、3：视频、4：音乐，默认为0.
	 */
	public JSONObject loadFriendsTimeline(String accessToken, String sinceId,
			String maxId, int count, int page, int baseApp, int filterType);

	/**
	 * 获取用户发布的微博
	 * 
	 * @param accessToken
	 *            OAuth授权后获得
	 * @param uid
	 *            需要查询的用户ID.
	 * @param screenName
	 *            需要查询的用户昵称.
	 * @return
	 */
	public JSONObject loadUserTimeline(String accessToken, String uid,
			String screenName);

	/**
	 * 获取用户发布的微博
	 * 
	 * @param accessToken
	 *            OAuth授权后获得
	 * @param uid
	 *            需要查询的用户ID.
	 * @param screenName
	 *            需要查询的用户昵称.
	 * @param sinceId
	 *            若指定此参数，则返回ID比since_id大的微博（即比since_id时间晚的微博），默认为0.
	 * @param maxId
	 *            若指定此参数，则返回ID小于或等于max_id的微博，默认为0.
	 * @param count
	 *            单页返回的记录条数，默认为50.
	 * @param page
	 *            返回结果的页码，默认为1.
	 * @param baseApp
	 *            是否只获取当前应用的数据.0为否（所有数据），1为是（仅当前应用），默认为0.
	 * @param filterType
	 *            过滤类型ID，0：全部、1：原创、2：图片、3：视频、4：音乐，默认为0.
	 * @param trimUser
	 *            返回值中user信息开关，0：返回完整的user信息、1：user字段仅返回user_id，默认为0.
	 * @return
	 */
	public JSONObject loadUserTimeline(String accessToken, String uid,
			String screenName, String sinceId, String maxId, int count,
			int page, int baseApp, int filterType, int trimUser);

	/**
	 * 根据微博ID获取单条微博内容
	 * 
	 * @param accessToken
	 *            OAuth授权后获得.
	 * @param id
	 *            需要获取的微博ID.
	 * @return
	 */

	public JSONObject fetchSingleById(String accessToken, String id);

	/**
	 * 获取一条原创微博的最新转发微博
	 * 
	 * @param accessToken
	 *            OAuth授权后获得
	 * @param id
	 *            需要查询的微博ID.
	 * @param sinceId
	 *            若指定此参数，则返回ID比since_id大的微博（即比since_id时间晚的微博），默认为0.
	 * @param maxId
	 *            若指定此参数，则返回ID小于或等于max_id的微博，默认为0.
	 * @param count
	 *            单页返回的记录条数，默认为50.
	 * @param page
	 *            返回结果的页码，默认为1.
	 * @param filterByAuthor
	 *            作者筛选类型，0：全部、1：我关注的人、2：陌生人，默认为0.
	 * @return
	 */
	public JSONObject loadRepostTimeline(String accessToken, String id,
			String sinceId, String maxId, int count, int page,
			int filterByAuthor);

	/**
	 * 获取最新的提到登录用户的微博列表，即@我的微博
	 * 
	 * @param accessToken
	 *            OAuth授权后获得
	 * @param sinceId
	 *            若指定此参数，则返回ID比since_id大的微博（即比since_id时间晚的微博），默认为0.
	 * @param maxId
	 *            若指定此参数，则返回ID小于或等于max_id的微博，默认为0.
	 * @param count
	 *            单页返回的记录条数，默认为50.
	 * @param page
	 *            返回结果的页码，默认为1.
	 * @param filterByAuthor
	 *            作者筛选类型，0：全部、1：我关注的人、2：陌生人，默认为0.
	 * @param filterBySource
	 *            来源筛选类型，0：全部、1：来自微博、2：来自微群，默认为0.
	 * @param filterByType
	 *            原创筛选类型，0：全部微博、1：原创的微博，默认为0.
	 * @return
	 */
	public JSONObject loadMentionsTimeline(String accessToken, String sinceId,
			String maxId, int count, int page, int filterByAuthor,
			int filterBySource, int filterByType);

	/**
	 * 通过微博（评论、私信）ID获取其MID(即一条微博或评论的url)
	 * 
	 * @param accessToken
	 *            OAuth授权后获得.
	 * @param id
	 *            需要查询的微博（评论、私信）ID，批量模式下，用半角逗号分隔，最多不超过20个.
	 * @param type
	 *            获取类型，1：微博、2：评论、3：私信，默认为1。
	 * @param isBatch
	 *            是否使用批量模式，0：否、1：是，默认为0。
	 * @return
	 */
	public JSONObject fetchMidById(String accessToken, String id, int type,
			int isBatch);

	/**
	 * 按天返回热门微博转发榜的微博列表
	 * 
	 * @param accessToken
	 * @param count
	 *            返回的记录条数，最大不超过50，默认为20。
	 * @param baseApp
	 *            是否只获取当前应用的数据。0为否（所有数据），1为是（仅当前应用），默认为0。
	 * @return
	 */
	public JSONObject loadDailyRepostHot(String accessToken, int count,
			int baseApp);

	/**
	 * 按周返回热门微博转发榜的微博列表
	 * 
	 * @param accessToken
	 * @param count
	 *            返回的记录条数，最大不超过50，默认为20。
	 * @param baseApp
	 *            是否只获取当前应用的数据。0为否（所有数据），1为是（仅当前应用），默认为0。
	 * @return
	 */
	public JSONObject loadWeeklyRepostHot(String accessToken, int count,
			int baseApp);

	/**
	 * 批量获取指定微博的转发数评论数
	 * 
	 * @param accessToken
	 * @param ids
	 *            需要获取数据的微博ID，多个之间用逗号分隔，最多不超过100个.
	 * @return
	 */
	public JSONObject fetchSpecifyCount(String accessToken, String... ids);

}
